#!/bin/bash

# JVM优化参数设置
JAVA_OPTS="-server -Xms1g -Xmx1g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20"
JAVA_OPTS="$JAVA_OPTS -Dio.netty.leakDetectionLevel=disabled"

# 从命令行参数中获取测试配置，如果没有提供则使用默认值
CLIENT_COUNT=${1:-50}       # 第一个参数：客户端数量，默认50
MESSAGE_PER_CLIENT=${2:-10} # 第二个参数：每个客户端发送的消息数量，默认10
BURST_MODE=${3:-true}       # 第三个参数：是否使用集中发送模式，默认true

echo "启动测试，模拟 $CLIENT_COUNT 个客户端同时发送消息，每个客户端发送 $MESSAGE_PER_CLIENT 条消息，集中发送模式=$BURST_MODE..."

# 运行应用程序，使用命令行参数覆盖配置文件中的设置
java $JAVA_OPTS \
  -Dtest.concurrent-clients=true \
  -Dtest.client-count=$CLIENT_COUNT \
  -Dtest.message-per-client=$MESSAGE_PER_CLIENT \
  -Dtest.burst-mode=$BURST_MODE \
  -jar target/socketchat-0.0.1-SNAPSHOT.jar 